/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package action;

import DAO.Constantes;
import DAO.DAO_Revista;
import actionForm.ModificarInicioSuperuserActionForm;
import clases.Articulo;
import clases.Revista;
import clases.Seccion;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 *
 * @author Rafa
 */
public class InicioSuperuserAction extends org.apache.struts.action.Action {

    /* forward name="success" path="" */
    private static final String SUCCESS = "success";

    /**
     * This is the action called from the Struts framework.
     *
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        ModificarInicioSuperuserActionForm formulario = (ModificarInicioSuperuserActionForm) form;
        DAO_Revista daoRevista = new DAO_Revista();
        Revista revista = daoRevista.consultaRevistaActiva(true);

        if (revista != null) {
            Set<Seccion> listaTodasSecciones = revista.getSeccions();

            List<Integer> listaNumTotalArtNuevos = new ArrayList();
            List<Integer> listaNumTotalArtRevision = new ArrayList();
            List<Integer> listaNumTotalArtMaquetacion = new ArrayList();
            List<Integer> listaNumTotalArtImprimir = new ArrayList();

            int numTotalesNuevos = 0;
            int numTotalesRevision = 0;
            int numTotalesMaquetacion = 0;
            int numTotalesImprimir = 0;

            Seccion[] secciones = listaTodasSecciones.toArray(new Seccion[]{});
            for (int i = 0; i < secciones.length; i++) {
                int artNuevos = 0;
                int artRevision = 0;
                int artMaquetacion = 0;
                int artImprimir = 0;

                Articulo[] articulosDeSeccion = secciones[i].getArticulos().toArray(new Articulo[]{});
                for (int j = 0; j < articulosDeSeccion.length; j++) {

                    if (articulosDeSeccion[j].getEstadoArticulo().getEstado().equals(Constantes.getART_SUBIDO())) {
                        artNuevos++;
                    } else if (articulosDeSeccion[j].getEstadoArticulo().getEstado().equals(Constantes.getART_EN_REVISION())) {
                        artRevision++;
                    } else if (articulosDeSeccion[j].getEstadoArticulo().getEstado().equals(Constantes.getART_EN_MAQUETACION())) {
                        artMaquetacion++;
                    } else if (articulosDeSeccion[j].getEstadoArticulo().getEstado().equals(Constantes.getART_A_IMPRIMIR())) {
                        artImprimir++;
                    }
                }
                listaNumTotalArtNuevos.add(artNuevos);
                numTotalesNuevos += artNuevos;

                listaNumTotalArtRevision.add(artRevision);
                numTotalesRevision += artRevision;

                listaNumTotalArtMaquetacion.add(artMaquetacion);
                numTotalesMaquetacion += artMaquetacion;

                listaNumTotalArtImprimir.add(artImprimir);
                numTotalesImprimir += artImprimir;
            }

            int numTotalSecciones = listaTodasSecciones.size();
            request.setAttribute("listaTodasSecciones", listaTodasSecciones); 
            request.setAttribute("numTotalSecciones", numTotalSecciones);             

            request.setAttribute("listaNumTotalArtNuevos", listaNumTotalArtNuevos);
            request.setAttribute("numTotalesNuevos", numTotalesNuevos);            
            
            request.setAttribute("listaNumTotalArtRevision", listaNumTotalArtRevision);            
            request.setAttribute("numTotalesRevision", numTotalesRevision);
            
            request.setAttribute("listaNumTotalArtMaquetacion", listaNumTotalArtMaquetacion);
            request.setAttribute("numTotalesMaquetacion", numTotalesMaquetacion);
                         
            request.setAttribute("listaNumTotalArtImprimir", listaNumTotalArtImprimir);
            request.setAttribute("numTotalesImprimir", numTotalesImprimir);
        } else {
            formulario.setError("No hay ninguna revista activa");
        }

        return mapping.findForward(SUCCESS);
    }
}
